/**
 * @name Fw.Component
 * @class 组件基类
 * @constructor
 * @example
 * @return
 */
Fw.Component = function(config){
	Fw.apply(this, config);
	//call parent
	Fw.Component.superclass.constructor.call(this);
	//初始化组件
	this.initComponent();
	//初始化事件
	this.initEvents();
	//完成渲染
	this.finishRender();
	return this;
};
Fw.extend(Fw.Component, Fw.util.Observable, {
    /**
     * 依赖加载
     */
    // requires: [],
	/**
	 * 初始化组件
	 */
	initComponent: function(){
	    //依赖加载
	    // Fw.each(this.requires, function(xtype){
	        // seajs.use(xtype.startsWith('Fw.') ? xtype : 'Fw.' + xtype.toLowerCase().capitalize());
	    // });
	    
		//EL
		this.el = this.getEl();
		//初始化渲染模板
		this.initTpl();
	},
	/**
	 * 初始化事件
	 */
	initEvents: Fw.emptyFn,
	/**
	 * 初始化HTML模版
	 */
	initTpl: Fw.emptyFn,
	/**
	 * 完成渲染
	 */
	finishRender: function(){
		this.fireEvent('render', this);
	},
	/**
	 * 返回EL 
	 */
	getEl: function(){
	    if(!this.el){
            this.el = this.contentEl ? $('#' + this.contentEl) : null;
	    }
        return this.el;
	}
});